<template>
  <div>
    <ul>
      <li v-for="message in messages" :key="message.id">
        <!-- <router-link :to="`/home/message/detail/${message.id}?name=jack&age=18`">{{
          message.title
        }}</router-link> -->

        <!-- 
          路由跳转方式：
            1. 路由链接跳转 router-link
            2. 编程式导航

          使用场景：
            默认情况下，用路由链接跳转 router-link（简单）
            比如需要发送请求、保存数据等一些其他事，再跳转，用编程式导航
         -->

        <router-link
          :to="{
            name: 'Detail',
            params: {
              id: message.id,
            },
            query: {
              name: 'jack',
              age: 18,
            },
          }"
          >{{ message.title }}</router-link
        >
        <button @click="push(message.id)">push</button>
        <button @click="replace(message.id)">replace</button>
      </li>
    </ul>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: "Message",
  data() {
    return {
      messages: [],
    };
  },
  methods: {
    push(id) {
      /**
       * 当我们使用前端路由时，组件实例对象上会有两个属性
       * $route
       *    当前路由的信息
       *       path   当前路由路径
       *       params
       *       query
       *       meta
       * $router
       *    history
       *      就有编程式导航方法
       *        push
       *        replace
       *        back
       *        forward
       *        go(-2) / go(2)
       */
      // this.$router.history.push("/home/message/detail/" + id);
      this.$router.history.push({
        name: "Detail",
        params: {
          id,
        },
      });
    },
    replace(id) {
      this.$router.history.replace("/home/message/detail/" + id);
    },
  },
  mounted() {
    setTimeout(() => {
      this.messages = [
        { id: 1, title: "message001" },
        { id: 3, title: "message003" },
        { id: 5, title: "message005" },
      ];
    }, 1000);
  },
};
</script>

<style>
</style>